Filemanager Class Reference

List of all members.

Public Member Functions

 Filemanager ()
 getActiveFolder ()
 getAction ()
 getActionID ()
 getImgFolder ()
 showTree ()
 showFiles ($statisticView=false)
 runAction ($file, $COLS, $action="", $actionID="", $activeFolder="")
 deleteFolder ($folderID)
 deleteFile ($file)
 createLink ($oldOnes=true, $vars= '', $link= '')
 downloadFile ($fileID)
 openLink ($fileID)
 replaceSpecialChars ($string, $special)
 canSeeFile ($fileID)
 getArchivedFolder ($folderID, $recursion=FALSE)

Private Member Functions

 setRessourceVisibility ($ressourceID, $visibilityToSet, $contentRecursive)

Private Attributes

 $mimeTypes = array()
 $imgFolder
 $activeFolder
 $action
 $actionID
 $visibleFiles

Detailed Description

Definition at line 58 of file class.filemanger.inc.php.


Member Function Documentation

Filemanager::canSeeFile ( fileID  ) 

Ermittelt Sichtbarkeits-/Downloadrechte von Userid auf fileId

Parameters:
int [$fileID] Die ID des files (folder/link/file) zum Rechte ermitteln
Returns:
bool Erfolgswert private

Definition at line 444 of file class.filemanger.inc.php.

References $_SESSION, and $db.

Referenced by downloadFile(), openLink(), and showFiles().

00444                                      {
00445             /* Sehen kann man wenn:
00446             - Man Admin/Dozent ist
00447             - Man Besitzer ist
00448             - Tutor und visibleMode=2
00449             - visibleMode=1
00450             - visibleMode aller übergeordneten Ordner != 1
00451             - Explizite User-Berechtigungen vorliegen */
00452             global $db;
00453             // Admin oder Dozent
00454             if ($_SESSION['usergroup'] == ADMIN || $_SESSION['usergroup'] == DOZENT) return true;
00455             $file = $db->get_row("SELECT courseID, userID, visible_type, parent_object FROM filelist WHERE fileID='$fileID'");
00456             // Es gibt keine solche Ressource
00457             if (!isset($file)) return false;
00458             // Wenn falscher Kurs gleich raus
00459             if (is_null($file) || $_SESSION['course'] != $file->courseID && $file->courseID != 0) return false;
00460             // Alle duerfen sehen
00461             if ($file->visible_type == 1) {
00462                 // nur wenn die Datei nicht in einem für Studenten nicht freigegebenen (Über-)Ordner liegt
00463                 $parentID = $file->parent_object;
00464                 while ($parentID != 0) {
00465                     $parentFolder = $db->get_row("SELECT visible_type, parent_object FROM filelist WHERE fileID='$parentID'");
00466                     if ($parentFolder->visible_type > 1) return false;
00467                     $parentID = $parentFolder->parent_object;
00468                 }
00469                 return true;
00470             }
00471             // Tutor
00472             if (isset($_SESSION['assistent']) && $file->visible_type == 2) {
00473                 // nur wenn die Datei nicht in einem nur für Dozenten freigegebenen (Über-)Ordner liegt
00474                 $parentID = $file->parent_object;
00475                 while ($parentID != 0) {
00476                     $parentFolder = $db->get_row("SELECT visible_type, parent_object FROM filelist WHERE fileID='$parentID'");
00477                     if ($parentFolder->visible_type == 3) return false;
00478                     $parentID = $parentFolder->parent_object;
00479                 }
00480                 return true;
00481             }
00482             // Besitzer
00483             if ($_SESSION['userid'] == $file->userID) return true;
00484             // Einzelberechtigung (gilt nicht, falls ein übergeordneter Ordner eine geringere Sichtbarkeit hat!!)
00485             if ($db->get_var("SELECT count(*) FROM filevisible WHERE fileID='$fileID' AND userID='".$_SESSION['userid']."'") > 0) return true;
00486             return false;
00487         }

Filemanager::createLink ( oldOnes = true,
vars = '',
link = '' 
)

Erstellt einen Link mit GET Variablen

Parameters:
bool [$oldOnes] Gibt an ob bisher existierende GET Variablen mit in den Link eingebaut werden.
array [$vars] Ein Array (Aufbau wie $_GET) mit den Variabeln und WErten die in den Link eingebaut werden
string [$link] Falls nicht PHP_SELF das Ziel ist muss hier der Dateiname angegeben werden.
Returns:
string Zusammengesetzter Link private

Definition at line 346 of file class.filemanger.inc.php.

00346                                                                      {
00347             if ($link == "") $link = PATH_TO_ROOT.SCRIPT_NAME;
00348             if (!is_array($vars)) $vars = $_GET;
00349             elseif (count($_GET) > 0 && $oldOnes) $vars = array_merge($_GET, $vars);
00350             foreach($vars as $getVarName => $getVarValue) {
00351                 if (trim($getVarValue) != "" && isset($getVarValue)) $getVars[] = urlencode($getVarName) ."=".urlencode($getVarValue);
00352             }
00353             return $link."?".implode($getVars, "&");
00354         }

Filemanager::deleteFile ( file  ) 

Löscht eine Datei physikalisch

Parameters:
string [$file] Dateiname der Datei
Returns:
boolean Erfolgswert private

Definition at line 282 of file class.filemanger.inc.php.

References $_SESSION.

Referenced by deleteFolder(), and runAction().

00282                                    {
00283             global $settings;
00284             $basedir = PATH_TO_ROOT.$settings["upload_path"].'filemanager/courseID/'.$_SESSION['course'];
00285             if (!file_exists($basedir."/".$file)) return false;
00286             if (!unlink($basedir."/".$file)) return false;
00287             return true;
00288         }

Filemanager::deleteFolder ( folderID  ) 

Löscht einen Ordner mit allem Inhalt und Unterordnern

Parameters:
int [$folderID] ID des zu loeschenden Ordners
Returns:
boolean Erfolgswert private

Definition at line 251 of file class.filemanger.inc.php.

References $db, and deleteFile().

Referenced by runAction().

00251                                          {
00252             global $db, $EZSQL_ERROR;
00253             $folders = $db->get_results("SELECT type, fileID, link FROM filelist WHERE parent_object='$folderID'");
00254             if ($folders) {
00255                 foreach($folders as $folder) {
00256                     if ($folder->type == "file") {
00257                         $this->deleteFile($folder->link);
00258                         // Datei aus Suchmaschinen-Index löschen
00259                         $spider = new Spider();
00260                         $spider->start("remove-file", $folder->fileID);
00261                     }
00262                     $this->deleteFolder($folder->fileID);
00263                 }
00264             }
00265             $errorCount = count($EZSQL_ERROR);
00266             $db->query("DELETE FROM filelist WHERE fileID='$folderID'");
00267             $db->query("DELETE FROM filelog WHERE fileID='$folderID'");
00268             $db->query("DELETE FROM filetreelayout WHERE folderID='$folderID'");
00269             $db->query("DELETE FROM filevisible WHERE fileID='$folderID'");
00270             RoleArtefacts::deleteItem(RESSOURCE, (int)$folderID);
00271             TeamArtefacts::deleteItem(RESSOURCE, (int)$folderID);
00272             if (count($EZSQL_ERROR) > $errorCount) return false;
00273             return true;
00274         }

Filemanager::downloadFile ( fileID  ) 

Schickt eine auf dem Server liegende Datei an den Browser

Parameters:
int [$fileID] Die ID des zu sendenden Files
Returns:
string Zusammengesetzter Link private

Definition at line 362 of file class.filemanger.inc.php.

References $_SESSION, $db, and canSeeFile().

00362                                        {
00363             global $settings, $db;
00364             // Dateiname generieren
00365             $file = $db->get_row("SELECT name, link, size, extension, orig_filename, courseID FROM filelist WHERE fileID='".$fileID."'");
00366             if (!$this->canSeeFile($fileID)) {
00367                 return "Sie haben keine Berechtigung diese Datei herunterzuladen!";
00368             }
00369             // Verzeichnis dass die hochgeladenen Dateien enthält
00370             $basedir = PATH_TO_ROOT.$settings["upload_path"].'filemanager/courseID/'.$file->courseID;
00371             //die datei wie sie auf dem server liegt (der dateiname ist verschlüsselt)
00372             $filename = sprintf("%s/%s", $basedir, $file->link);
00373             if (!file_exists($filename)) return "Datei nicht vorhanden, bitte wenden Sie sich an den Administrator!";
00374             //den mimetypen bestimmen
00375             if (isset($this->mimeTypes[$file->extension])) {
00376                 $mimetype = $this->mimeTypes[$file->extension];
00377             } else {
00378                 $mimetype = "application/octet-stream";
00379             }
00380             // Zugriff wird geloggt
00381             $time = time();
00382             $db->query("INSERT INTO filelog (userID, fileID, date) VALUES ('".$_SESSION['userid']."','$fileID','$time')");
00383             $db->query("UPDATE filelist SET counter=counter+1 WHERE fileID='$fileID'");
00384             // Output-Buffering abschalten
00385             ob_end_clean();
00386             // HTTP Header Informationen senden, die ersten beiden sind wichtig für den IE
00387             header("Pragma: private");
00388             header("Cache-control: private, must-revalidate");
00389             header("Content-Type: $mimetype");
00390             header("Content-Disposition: attachment; filename=\"".$file->orig_filename."\"");
00391             header("Content-Transfer-Encoding: binary");
00392             header("Content-Length: ".$file->size);
00393             //die datei senden
00394             readfile($filename);
00395             return "";
00396         }

Filemanager::Filemanager (  ) 

Konstruktor

public

Definition at line 70 of file class.filemanger.inc.php.

References $_SESSION, and $db.

00070                                   {
00071         global $db, $resDB;
00072         $this->imgFolder = PATH_TO_ROOT.'ressourcen/icons/';
00073         // Liste mit Mimetypen f�llen
00074         $this->mimeTypes = array('ez' => 'application/andrew-inset', 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'doc' => 'application/msword', 'bin' => 'application/octet-stream', 'dms' => 'application/octet-stream', 'lha' => 'application/octet-stream', 'lzh' => 'application/octet-stream', 'exe' => 'application/octet-stream', 'class' => 'application/octet-stream', 'so' => 'application/octet-stream', 'dll' => 'application/octet-stream', 'oda' => 'application/oda', 'pdf' => 'application/pdf', 'ai' => 'application/postscript', 'eps' => 'application/postscript', 'ps' => 'application/postscript', 'smi' => 'application/smil', 'smil' => 'application/smil', 'mif' => 'application/vnd.mif', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'wbxml' => 'application/vnd.wap.wbxml', 'wmlc' => 'application/vnd.wap.wmlc', 'wmlsc' => 'application/vnd.wap.wmlscriptc', 'bcpio' => 'application/x-bcpio', 'vcd' => 'application/x-cdlink', 'pgn' => 'application/x-chess-pgn', 'cpio' => 'application/x-cpio', 'csh' => 'application/x-csh', 'dcr' => 'application/x-director', 'dir' => 'application/x-director', 'dxr' => 'application/x-director', 'dvi' => 'application/x-dvi', 'spl' => 'application/x-futuresplash', 'gtar' => 'application/x-gtar', 'hdf' => 'application/x-hdf', 'js' => 'application/x-javascript', 'skp' => 'application/x-koan', 'skd' => 'application/x-koan', 'skt' => 'application/x-koan', 'skm' => 'application/x-koan', 'latex' => 'application/x-latex', 'nc' => 'application/x-netcdf', 'cdf' => 'application/x-netcdf', 'sh' => 'application/x-sh', 'shar' => 'application/x-shar', 'swf' => 'application/x-shockwave-flash', 'sit' => 'application/x-stuffit', 'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'tar' => 'application/x-tar', 'tcl' => 'application/x-tcl', 'tex' => 'application/x-tex', 'texinfo' => 'application/x-texinfo', 'texi' => 'application/x-texinfo', 't' => 'application/x-troff', 'tr' => 'application/x-troff', 'roff' => 'application/x-troff', 'man' => 'application/x-troff-man', 'me' => 'application/x-troff-me', 'ms' => 'application/x-troff-ms', 'ustar' => 'application/x-ustar', 'src' => 'application/x-wais-source', 'xhtml' => 'application/xhtml+xml', 'xht' => 'application/xhtml+xml', 'zip' => 'application/zip', 'au' => 'audio/basic', 'snd' => 'audio/basic', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'kar' => 'audio/midi', 'mpga' => 'audio/mpeg', 'mp2' => 'audio/mpeg', 'mp3' => 'audio/mpeg', 'aif' => 'audio/x-aiff', 'aiff' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', 'm3u' => 'audio/x-mpegurl', 'ram' => 'audio/x-pn-realaudio', 'rm' => 'audio/x-pn-realaudio', 'rpm' => 'audio/x-pn-realaudio-plugin', 'ra' => 'audio/x-realaudio', 'wav' => 'audio/x-wav', 'pdb' => 'chemical/x-pdb', 'xyz' => 'chemical/x-xyz', 'bmp' => 'image/bmp', 'gif' => 'image/gif', 'ief' => 'image/ief', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpe' => 'image/jpeg', 'png' => 'image/png', 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'djvu' => 'image/vnd.djvu', 'djv' => 'image/vnd.djvu', 'wbmp' => 'image/vnd.wap.wbmp', 'ras' => 'image/x-cmu-raster', 'pnm' => 'image/x-portable-anymap', 'pbm' => 'image/x-portable-bitmap', 'pgm' => 'image/x-portable-graymap', 'ppm' => 'image/x-portable-pixmap', 'rgb' => 'image/x-rgb', 'xbm' => 'image/x-xbitmap', 'xpm' => 'image/x-xpixmap', 'xwd' => 'image/x-xwindowdump', 'igs' => 'model/iges', 'iges' => 'model/iges', 'msh' => 'model/mesh', 'mesh' => 'model/mesh', 'silo' => 'model/mesh', 'wrl' => 'model/vrml', 'vrml' => 'model/vrml', 'css' => 'text/css', 'html' => 'text/html', 'htm' => 'text/html', 'asc' => 'text/plain', 'txt' => 'text/plain', 'rtx' => 'text/richtext', 'rtf' => 'text/rtf', 'sgml' => 'text/sgml', 'sgm' => 'text/sgml', 'tsv' => 'text/tab-separated-values', 'wml' => 'text/vnd.wap.wml', 'wmls' => 'text/vnd.wap.wmlscript', 'etx' => 'text/x-setext', 'xsl' => 'text/xml', 'xml' => 'text/xml', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpe' => 'video/mpeg', 'qt' => 'video/quicktime', 'mov' => 'video/quicktime', 'mxu' => 'video/vnd.mpegurl', 'avi' => 'video/x-msvideo', 'movie' => 'video/x-sgi-movie', 'ice' => 'x-conference/x-cooltalk',);
00075         $this->activeFolder = isset($_GET['activeFolder']) ? $_GET['activeFolder'] : 0;
00076         $this->action = isset($_GET['action']) ? $_GET['action'] : '';
00077         $this->actionID = isset($_GET['actionID']) ? $_GET['actionID'] : 0;
00078         $this->visibleFiles = $db->get_col("SELECT fileID FROM filevisible WHERE userID='".$_SESSION["userid"]."'");
00079         $resDB = new RessourcenDB( $this );
00080     }

Filemanager::getAction (  ) 

Definition at line 86 of file class.filemanger.inc.php.

00086                                 {
00087         return $this->action;
00088     }

Filemanager::getActionID (  ) 

Definition at line 90 of file class.filemanger.inc.php.

00090                                   {
00091         return $this->actionID;
00092     }

Filemanager::getActiveFolder (  ) 

Definition at line 82 of file class.filemanger.inc.php.

00082                                           {
00083                 return $this->activeFolder;
00084         }

Filemanager::getArchivedFolder ( folderID,
recursion = FALSE 
)

Deliver a archive of the given folder.

Depending on the configuration, its possible that a recursive download archive is generated.

Parameters:
Integer $folderID
Boolean $recursion (Default = False)
Returns:
String

Definition at line 499 of file class.filemanger.inc.php.

References $_SESSION, and ZipProvider::checkArchiveSize().

00499                                                                          {
00500                 global $resDB;
00501                 global $settings;
00502                 
00503                 if ($folderID > 0) {
00504                         $folder = $resDB->getFolderByID($folderID);
00505                         
00506                         if (!$folder instanceof Folder) {
00507                                 return "Ordner mit der ID ".$folderID." wurde nicht gefunden.";
00508                         }
00509                 } elseif ($folderID == -2) {
00510                         $folder = new Folder(-2);
00511                         $folder->setLink("Last 20");
00512                         $folder->setCourseID($_SESSION['course']);
00513                         $folder->setDescription("Die 20 neuesten Dateien dieses Kurses.");
00514                         } elseif ($folderID == -1) {
00515                         $folder = new Folder(-1);
00516                         $folder->setLink("Top 20");
00517                         $folder->setCourseID($_SESSION['course']);
00518                         $folder->setDescription("Die 20 beliebtesten Dateien dieses Kurses.");
00519                         } else {
00520                                 return "Ordner mit der ID ".$folderID." wurde nicht gefunden.";
00521                         }
00522                         
00523                 try {
00524                         if (ZipProvider::checkArchiveSize($folder, $recursion) <= 
00525                                  $settings['filemanager_archive_max_filesize']*1024*1024) {
00526                                 
00527                                 $zipProvider = new ZipProvider($folder, $recursion);
00528                                 $zipProvider->createArchive();
00529                                 $zipProvider->sendArchive();
00530                         }
00531                 } catch (ArchiverException $e) {
00532                         return $e->getMessage();
00533                 }
00534                 
00535             return "";
00536         }

Filemanager::getImgFolder (  ) 

Definition at line 94 of file class.filemanger.inc.php.

00094                                        {
00095                 return $this->imgFolder;
00096         }

Filemanager::openLink ( fileID  ) 

Öffnet einen Link in einem neuen Fenster (Gegenstück zu downloadFile für Links)

Parameters:
int [$fileID] ID des zu öffnenden Links private

Definition at line 404 of file class.filemanger.inc.php.

References $_SESSION, $db, and canSeeFile().

00404                                    {
00405             global $db;
00406             if (!$this->canSeeFile($fileID)) {
00407                 return "Sie haben keine Berechtigung diesen Link zu &ouml;ffnen!";
00408             }
00409             // Ziel Url ermitteln
00410             $link = $db->get_var("SELECT link FROM filelist WHERE fileID='".$fileID."'");
00411             // Zugriff wird geloggt
00412             $time = time();
00413             $db->query("INSERT INTO filelog (userID, fileID, date) VALUES ('".$_SESSION['userid']."','$fileID','$time')");
00414             $db->query("UPDATE filelist SET counter=counter+1 WHERE fileID='$fileID'");
00415             if (Utilities::validateURL($link)) header("Location: ".$link);
00416             exit();
00417         }

Filemanager::replaceSpecialChars ( string,
special 
)

Ersetzt bestimmte Zeichen mit einem _

Parameters:
string [$string] String in dem Zeichen ersetzt werden sollen
string [$special] Ein String mit den SonderZeichen, die ersetzt werden sollen
Returns:
string String mit ersetzten Zeichen private

Definition at line 427 of file class.filemanger.inc.php.

00427                                                         {
00428             $strlen = strlen($special);
00429             for ($i = 0 ; $i <= $strlen ; $i++) {
00430                 $char = substr($special, $i, 1);
00431                 $string = str_replace($char, "_", $string);
00432                 $string = str_replace("__", "_", $string);
00433             }
00434             $string = str_replace("__", "_", $string);
00435             return $string;
00436         }

Filemanager::runAction ( file,
COLS,
action = "",
actionID = "",
activeFolder = "" 
)

Führt eine Aktion aus, die vom User ausgewählt wurde.

Parameters:
object [$file] details der aktuellen Datei, oder folderID
int [$COLS] Anzahl der Spalten der Filelist, wird fuer Colspan benoetigt
string $action Durchzuführende Aktion, fehlt diese Angabe, wird der GET-Parameter verwendet
int $actionID ID des Objekts, auf das die Aktion angewandt werden soll, fehlt diese Angabe, wird der GET-Parameter verwendet
int $activeFolder ID des aktuellen Verzeichnisses, fehlt diese Angabe, wird der GET-Parameter verwendet private

Definition at line 176 of file class.filemanger.inc.php.

References $_SESSION, $action, $actionID, $activeFolder, $db, deleteFile(), deleteFolder(), and setRessourceVisibility().

00176                                                                                        {
00177         global $db;
00178         if (empty($activeFolder)) $activeFolder = $_GET['activeFolder'];
00179         if (empty($action)) $action = isset($_GET['action']) ? $_GET['action'] : '';
00180         if (empty($actionID)) $actionID = isset($_GET['actionID']) ? $_GET['actionID'] : '';
00181         if (!$action || (is_object($file) && $file->fileID != $actionID) || (!is_object($file) && $file != $actionID)) return false;
00182         switch ($action) {
00183             case 'delete_trueFile':
00184                 if ($_SESSION['userid'] == $file->userID || $_SESSION['usergroup'] == ADMIN || ($_SESSION["usergroup"] == DOZENT && $_SESSION["course"] > 0)) {
00185                     if ($file->type == 'file') { // Wenn Datei dann loeschen
00186                         $this->deleteFile($file->link);
00187                         // Datei aus Suchmaschinen-Index löschen
00188                         $spider = new Spider();
00189                         $spider->start("remove-file", $file->fileID);
00190                     }
00191                     $db->query("DELETE FROM filelist WHERE fileID='$file->fileID'");
00192                     $db->query("DELETE FROM filelog WHERE fileID='$file->fileID'");
00193                     $db->query("DELETE FROM filevisible WHERE fileID='$file->fileID'");
00194                     RoleArtefacts::deleteItem(RESSOURCE, (int)$file->fileID);
00195                     TeamArtefacts::deleteItem(RESSOURCE, (int)$file->fileID);
00196                 } else {
00197                     return "Zugriff verweigert!";
00198                 }
00199                 break;
00200 
00201             case 'delete_trueFolder':
00202                 if ($_SESSION['usergroup'] == ADMIN || ($_SESSION["usergroup"] == DOZENT && $_SESSION["course"] > 0)) {
00203                     $this->deleteFolder($activeFolder);
00204                     unset($_GET['activeFolder']);
00205                 } else {
00206                     return "Zugriff verweigert!";
00207                 }
00208                 break;
00209 
00210 
00211             case 'editFolder':
00212                 break;
00213 
00214             case 'studentWriteFolder':
00215                 if ($_SESSION['usergroup'] != 2) {
00216                     $writeState = $db->get_var("SELECT student_write FROM filelist WHERE fileID='$actionID' ");
00217                     $writeState = ($writeState == 1 ? 0 : 1);
00218                     $db->query("UPDATE filelist SET student_write='$writeState' WHERE fileID='$actionID'");
00219                 } else {
00220                     echo "<tr><td class='res_file-extra' colspan='".$COLS."'>Zugriff verweigert!</td>";
00221                 }
00222                 break;
00223 
00224             case 'setVisibilityDocentsOnly':
00225                 if (isset($_GET['mode'])) $this->setRessourceVisibility($actionID, 3, $_GET['mode']);
00226                 else $this->setRessourceVisibility($actionID, 3, 1);
00227                 header('Location: filemanager.php?activeFolder='.$activeFolder);
00228                 break;
00229 
00230             case 'setVisibilityNoStudents':
00231                 if (isset($_GET['mode'])) $this->setRessourceVisibility($actionID, 2, $_GET['mode']);
00232                 else $this->setRessourceVisibility($actionID, 2, 1);
00233                 header('Location: filemanager.php?activeFolder='.$activeFolder);
00234                 break;
00235 
00236             case 'setVisibilityAll':
00237                 if (isset($_GET['mode'])) $this->setRessourceVisibility($actionID, 1, $_GET['mode']);
00238                 else $this->setRessourceVisibility($actionID, 1, 1);
00239                             header('Location: filemanager.php?activeFolder='.$activeFolder);
00240                 break;
00241             }
00242         }

Filemanager::setRessourceVisibility ( ressourceID,
visibilityToSet,
contentRecursive 
) [private]

Definition at line 300 of file class.filemanger.inc.php.

References $db.

Referenced by runAction().

00300                                                                                                    {
00301             global $db, $EZSQL_ERROR;
00302             // Momentane Sichtbarkeit der Ressource aus der DB auslesen
00303             $visible = $db->get_var("SELECT visible_type FROM filelist WHERE fileID='$ressourceID'");
00304             // Ressource hat schon die gewünschte Sichtbarkeit
00305             if ($visible == $visibilityToSet && $contentRecursive == 1) return true;
00306             // Wenn die Ressource ein Ordner ist und dessen Sichtbarkeit eingeschränkt werden soll:
00307             //          Sichtbarkeit untergeordneter Ordner, Dateien und Links ändern
00308             if ($contentRecursive > 1) {
00309                 $ressources = $db->get_results("SELECT type, fileID, link , visible_type FROM filelist WHERE parent_object='$ressourceID'");
00310                 if ($ressources != null) {
00311                     // Sichtbarkeit der untergeordneten Ressource nur ändern,
00312                     // wenn sie eingeschränkt werden soll; Alle Unterordner durchgehen
00313                     foreach($ressources as $ressource) {
00314                         //für alle Dateien und Links in dem Ordner
00315                         if ($ressource->type == "file") {
00316                             $this->setRessourceVisibility($ressource->link, $visibilityToSet, $contentRecursive);
00317                         }
00318                         //für den Ordner selbst, alle Unterordner und deren Inhalt
00319                         if ($contentRecursive == 2) $this->setRessourceVisibility($ressource->fileID, $visibilityToSet, 4);
00320                         else $this->setRessourceVisibility($ressource->fileID, $visibilityToSet, $contentRecursive);
00321                     }
00322                 }
00323             }
00324             //Ressource mit ID $ressourceID in der DB ändern
00325             if ($contentRecursive != 2) {
00326                 // Sichtbarkeitswerte für die Ressource auf der Datenbank updaten
00327                 $errorCount = count($EZSQL_ERROR);
00328                 $db->query("UPDATE filelist SET visible_type ='$visibilityToSet' WHERE fileID='$ressourceID'");
00329                 $visible = $db->get_var("SELECT visible_type FROM filelist WHERE fileID='$ressourceID'");
00330                 if (count($EZSQL_ERROR) > $errorCount) return false;
00331                 if ($contentRecursive > 2) {
00332                     $db->query("DELETE FROM filevisible WHERE fileID='".$ressourceID."'");
00333                 }
00334             }
00335             return true;
00336         }

Filemanager::showFiles ( statisticView = false  ) 

Definition at line 141 of file class.filemanger.inc.php.

References canSeeFile().

00141                                                      {
00142                 global $resDB;
00143                 if ( $this->activeFolder > 0 ) {
00144                         $folder = $resDB->getFolderByID( $this->activeFolder );
00145                     if (!$folder || !$this->canSeeFile($this->activeFolder)) //Nicht berechtigte Usergruppen dürfen den Ordner und seinen Inhalt nicht sehen
00146                 //oder downloaden, auch nicht durch explizite Angabe des Links
00147                 {
00148                     return "Keine solche Ressource verfügbar!";
00149                 }
00150                 } else {
00151             if ($this->activeFolder == -1) {
00152                 $folder = new Folder(-1);
00153                 $folder->setFileManager( $this );
00154                 $folder->setLink("Top 20");
00155             }
00156             if ($this->activeFolder == -2) {
00157                 $folder = new Folder(-2);
00158                 $folder->setFileManager( $this );
00159                 $folder->setLink("20 neuesten Ressourcen");
00160             }
00161                 }
00162 
00163                 $folder->showFiles( $statisticView );
00164         }

Filemanager::showTree (  ) 

Erstellt den Verzeichnisbaum und gibt ihn aus

public

Definition at line 103 of file class.filemanger.inc.php.

References $_SESSION, and $db.

00103                         {
00104         global $db;
00105         $template = new Template( PATH_TO_ROOT . "/ressourcen/templates/foldertree.html" );
00106                 $tree_entries = "";
00107 
00108         //Bestimmung der Anzeigeoptionen fuer spezielle User
00109         // INIT
00110         $course = $_SESSION['course'];
00111         // Setzt Standards fuer die Symbole
00112         $plus = 8;
00113         $minus = 6;
00114         $join = 3;
00115         $bottom = false;
00116         // MostDownloaded Files
00117         $last20 = new Folder(-2);
00118         $last20->setLink("Last 20");
00119         $last20->setName("Die 20 neuesten Dateien dieses Kurses.");
00120                 $last20->setFolderType(13);
00121                 $last20->setLayerType(5);
00122                 $tree_entries .= $last20->drawFolder("", false);
00123 
00124         $last20 = new Folder(-1);
00125         $last20->setLink("Top 20");
00126         $last20->setName("Die 20 beliebtesten Dateien dieses Kurses.");
00127                 $last20->setFolderType(12);
00128                 $last20->setLayerType(5);
00129                 $tree_entries .= $last20->drawFolder("", false);
00130 
00131         $mainFolder = new Folder();
00132         $mainFolder->setFileManager( $this );
00133         if ($Return = $mainFolder->printSubFolder()) {
00134                 $tree_entries .= $Return;
00135         } else {
00136                 $tree_entries .= "<span class='tableCell'>Noch keine Ordner angelegt.</span>";
00137         }
00138         eval ( $template->getTemplate() );
00139     }


Member Data Documentation

Filemanager::$action [private]

Definition at line 62 of file class.filemanger.inc.php.

Referenced by runAction().

Filemanager::$actionID [private]

Definition at line 63 of file class.filemanger.inc.php.

Referenced by runAction().

Filemanager::$activeFolder [private]

Definition at line 61 of file class.filemanger.inc.php.

Referenced by runAction().

Filemanager::$imgFolder [private]

Definition at line 60 of file class.filemanger.inc.php.

Filemanager::$mimeTypes = array() [private]

Definition at line 59 of file class.filemanger.inc.php.

Filemanager::$visibleFiles [private]

Definition at line 64 of file class.filemanger.inc.php.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Enumerations

Generated on Fri Oct 30 17:21:39 2009 for MSP Modul Ressourcen by  doxygen 1.6.1